As storage devices that make use of flash memory as a storage medium are overwhelmingly faster than HDDs and the like, they are rapidly gaining in popularity in recent years as bit costs decrease. In addition, conventional storage systems have utilized a plurality of storage devices, such as HDDs, in order to achieve high reliability and high performance. Accordingly, it is common for pluralities of storage devices that use flash memory as a storage medium to be utilized in storage systems, and for storage controllers to control these storage devices that use flash memory as a storage medium. In addition, some storage devices that use flash memory as a storage medium have form factors and interfaces compatible with HDDs. These are referred to as SDDs. In contrast, there are also devices that do not have compatibility with HDDs. The present invention is directed to both types, and is hereinafter referred to as a flash package.
As the bit cost of flash memory is higher than that of magnetic disks or the like, there is a need to reduce the stored data capacity and increase the apparent capacity. In storage systems, a deduplication technique is one technique for reducing data storage capacity. In this technique, the storage controller checks whether multiple sets of data with the same contents are stored in the storage system. In the case that there is a plurality of sets of data with the same content (duplicate data), only one of them is left in the storage system and the remaining data is deleted. In this way, the amount of data stored in a storage device may be reduced.
For example, Patent Document 1 discloses a deduplication technique in a storage device having a plurality of flash memory modules mounted therein. The storage device disclosed in Patent Document 1 is equipped with a plurality of storage devices called flash memory modules. In addition, the storage device disclosed in Patent Document 1 divides data into data units called stripe units, and distributes and stores the divided data in a plurality of flash memory modules. When deduplication processing is performed, the storage controller performs deduplication on data of a size equal to or larger than a stripe unit with a range extending over a plurality of flash memory modules. Then, the flash memory modules perform deduplication for data of a size equal to or smaller than a stripe unit with respect to the data in the flash memory module. In the technique disclosed in Patent Document 1, as duplication elimination is performed with a range extending over a plurality of storage devices, the effect of reducing the data amount is greater in comparison with cases where deduplication processing targeting only the data of the storage device is performed.
In contrast, in recent years, capacity virtualization functions have become widespread in storage systems. A capacity virtualization function is a function for providing a host side with a virtual capacity larger than the physical capacity of the storage devices possessed by the storage system, and in general, is a function possessed by the storage controller in the storage system. This is because when the user actually uses storage, the amount of data actually stored in the user volume with respect to the capacity of the user volume (storage device as seen by the user) defined by the user is based on a characteristic that it does not readily reach the capacity of the user volume.
That is, when the capacity virtualization function is not used, the user needs to reserve a physical storage area equal to the capacity of the volume at the time of volume definition. When the capacity virtualization function is used, at the time of volume definition, the user does not necessarily have to prepare a physical storage area corresponding to the capacity of the volume. When a data write actually occurs in the volume, the storage area is allocated to the volume for the first time. As a result, since the capacity of the storage device to be prepared in advance can be reduced, and the user need not strictly define the volume capacity but rather simply define a value having a large margin, usability can be improved.
Patent Document 2 discloses a technique of providing a capacity virtualization function not only in a storage controller but also in a flash package in a storage system having a plurality of flash packages. Furthermore, in the storage system disclosed in Patent Document 2, it is also disclosed that the flash package may compress the data. In general, since the compression ratio of data varies depending on the content of data, it is difficult to predict the data size after compression. Also, if the data is updated, the compression ratio naturally changes. For this reason, Patent Document 2 discloses a technique for changing the size (virtual capacity) of the volume provided by the flash package to the storage controller due to the change in the compression rate.